package com.dq.Week3.day12.linkedList;

import java.io.File;
import java.util.LinkedList;

/**
 * 按照层级关系打印一个目录中的所有内容
 * 注意：需要逐层打印
 *
 * 使用队列
 */
public class QueueDemo02 {

    public static void main(String[] args) {

        String filepath = "D:\\abc";
        // java中代表目录和文件的都是File对象
        printDirByLevel(filepath);
    }
    public static void printDirByLevel(String filepath) {
        File file = new File(filepath);
        // 如果这个路径是文件夹
        if(file.isFile())
        {
            System.out.println(file.getName());
            return;
        }

        //2.创建一个任务队列，给队列中添加任务元素
        LinkedList<File> queue = new LinkedList<>();
        queue.offer(file);//队列中的第一个元素
        while (queue.size()>0)
        {
            //取出队列首元素
            File first = queue.poll();
            System.out.println(first.getName());

            //获取首元素的孩子，然后放入队列中
            File[] files = first.listFiles();
            if(files!=null){
                for (int i=0;i<files.length;i++)
                {
                    queue.offer(files[i]);
                }
            }
        }

    }

}